/**   
 * @Title: PubDeviceService.java 
 * @Package com.leesche.zcsp.center.web.service 
 * @Description:() 
 * @author dennies yang
 * @date 2016年9月22日 下午3:54:22 
 * @version V1.0   
 */
package com.leesche.zcsp.node.web.service;

import java.util.List;
import java.util.Map;

import com.leesche.zcsp.node.app.v1.vo.DeviceInfoVo;
import com.leesche.zcsp.node.app.v1.vo.FactoryDeviceVo;
import com.leesche.zcsp.node.utils.web.PagingResult;
import com.leesche.zcsp.node.web.model.PubDevice;
import com.leesche.zcsp.node.web.model.PubDeviceCriteria;
import com.leesche.zcsp.node.web.service.impl.data.read.*;
import com.leesche.zcsp.node.web.vo.v2.FactoryDeviceListVo;

/**
 * @Title: PubDeviceService.java
 * @Package com.leesche.zcsp.center.web.service
 * @Description:()
 * @author dennies yang
 * @date 2016年9月22日 下午3:54:22
 * @version V1.0
 */
public interface PubDeviceService
		extends
		BaseService<PubDevice, PubDeviceCriteria, PubDeviceDto, QueryPubDeviceCondition, Long> {
	
	Integer getDeviceIDByShortCode(String shortCode);

	/**
	 *
	 * @return微信查询设备管理列表
	 * @param state 设备状态（1：在线，2：离线）
	 */
	List<InfoDeviceDto> findDeviceList(QueryPubDeviceCondition condition);

	/**
	 * 场地与设备分页查询
	 * @param condition
	 * @return
	 */
	PagingResult<InfoDeviceDto> selectDeviceListByPage(QueryPubDeviceCondition condition);

	/**
	 * 查询设备状态信息
	 * @param deviceId 设备id
	 * @param shortCode 设备简码
	 * @param imme 设备唯一码
	 * @return
	 */
	InfoDeviceDto findInfoDevice(QueryPubDeviceCondition condition);

	List<Map<String,Object>> getDeviceListsByUserid(Long userid);
	
	Integer editPubDeviceByImme(PubDevice pubDevice);

	PubDeviceDto selectByCondition(QueryPubDeviceCondition condition);

	/**
	 * 给工厂用户查询设备列表接口
	 * @param condition
	 * @return
	 */
	List<FactoryDeviceVo> selectFactoryDeviceVo(QueryPubDeviceCondition condition);

	/**
	 * 给工厂用户查询设备列表接口分页
	 * @param condition
	 * @return
	 */
	PagingResult<FactoryDeviceVo> selectFactoryDeviceListByPage(QueryPubDeviceCondition condition);
	/**
	 * 给工厂用户查询设备接口
	 * @param condition
	 * @return
	 */
	FactoryDeviceVo selectFactoryDevice(QueryPubDeviceCondition condition);

	/**
	 * 给工厂用户设备类型查询设备列表接口分页
	 * @param condition
	 * @return
	 */
	PagingResult<FactoryDeviceListVo> selectFactoryDeviceListVo(QueryPubDeviceCondition condition);

	List<DeviceCountDto> countDeviceForFactory(QueryDeviceCountCondition condition);
	List<DeviceCountDataDto> findDeviceDataForFactory(QueryDeviceCountCondition condition);

	int updateVersionByImme(Map map);

	/**
	 * 工厂检测设备是否绑定
	 * @param condition
	 * @return
	 */
	PubDevice checkFactoryDevice(QueryPubDeviceCondition condition);

	/**
	 * 查询设备信息含设备固件版本信息
	 * @param condition
	 * @return
	 */
	DeviceInfoVo findDeviceInfo(QueryPubDeviceCondition condition);
}
